<?php
namespace app\api\controller\v1;

use \app\common\controller\ApiCommon;
use app\common\model\SystemConfig;
use app\common\model\Term;

class Terms extends ApiCommon
{
    protected $modelName = 'Term';

    /**
     * 查询数据
     *
     * @return void
     */
    public function index()
    {
        $this->checkPermission(10);
        return parent::_index();
    }

    /**
     * 读取单个学期信息
     *
     * @param [type] $id
     * @return void
     */
    public function read($id)
    {
        $this->checkPermission(10);
        return parent::_read($id);
    }

    /**
     * 保存数据
     *
     * @return [int]
     */
    public function save()
    {
        $this->checkPermission(1);
        return parent::_save();
    }

    /**
     * 更新数据
     *
     * @param [type] $id
     * @return void
     */
    public function update($id)
    {
        $this->checkPermission(1);
        return parent::_update($id);
    }

    /**
     * 获取默认学期
     *
     * @return void
     */
    public function getDefaultTermID()
    {
        $this->checkPermission(10);
        $term = $this->_getModel()->getDefaultTerm();
        if ($term == null) {
            return json_response([], STATUS_FAIL, "无法获取默认学期,请联系管理员进行设置");
        }
        return json_response([$term->id]);
    }

    /**
     * 设置最新的学期的ID
     *
     * @return void
     */
    public function setDefaultTermID()
    {
        $this->checkPermission(0);
        $request = $this->request;
        if (!($termId = $request->param('term_id'))) {
            return json_response([], STATUS_INVALD_PARAM, "必须传入学期ID");
        }
        if (!Term::get($termId)) {
            return json_response([], STATUS_INVALD_PARAM, "必须传入有效的学期ID");
        }

        $systemConfig = new SystemConfig;
        $systemConfig->setValueStr("CurTerm", $termId);
        return json_response([]);
    }


    /**
     * 获取默认学期的开始时间
     * 
     * @return void
     */
    public function getStartDate()
    {
        //此接口不需要权限即可获取数据
        $term = $this->_getModel()->getDefaultTerm($this->request->param('date'));
        if ($term && $term->start_date) {
            return json_response([$term->start_date]);
        } else {
            return json_response([], STATUS_FAIL, '无法获取默认学期的开始日期,无法计算当前的周次,请联系管理官补全学期数据');
        }
    }
}
